VPCエンドポイント経由でAWSサービスエンドポイントへ接続する環境で、AWS CLI コマンド実行時に「not authorized to perform: iam:PassRole」エラーが出たときの対処法
困っていた内容
EC2 インスタンスから、AWS CLI コマンドの実行時以下のエラーが発生しました。
$ aws ec2 run-instances \ --image-id ami-0abcdef1234567890 \ --instance-type t2.micro \ --key-name MyKeyPair <IAMロールのARN> is not authorized to perform: iam:PassRole on resource ~
EC2 インスタンスには AdministratorAccess ポリシーが付与されたロールがアタッチされているにも関わらず、権限に関するエラーが発生していると見受けられました。
なお、VPC エンドポイント経由で、AWS サービスエンドポイントへ接続している環境です。
解決策を教えてください。
どう対応すればいいの?
EC2 の RunInstances アクションは iam:PassRole の権限が必要なアクションです。
VPC エンドポイント経由で、AWS サービスエンドポイントへ接続する場合、
iam:PassRole の権限が必要なアクションを実行するには、VPC エンドポイントポリシーに iam:PassRole が必要です。
以下のポリシーを VPC エンドポイントポリシーに加えてください
{ "Action": "iam:PassRole", "Resource": "<IAM Role の ARN>", "Effect": "Allow", "Principal": "*" }
参考資料
IAM: 特定の AWS のサービスに IAM ロールを渡す - AWS Identity and Access Management
VPC エンドポイントでサービスへのアクセスを制御する - Amazon Virtual Private Cloud
IAM ロールの PassRole と AssumeRole をもう二度と忘れないために絵を描いてみた | DevelopersIO